<?php
require_once 'common/config.php';
require_once 'common/functions.php';

// 检查登录状态
check_login();

// 初始化数据库连接
$db = db_connect();

// 检查是否是POST请求
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
    $sort = isset($_POST['sort']) ? intval($_POST['sort']) : 0;

    // 验证参数
    if ($id && $sort >= 1 && $sort <= 5) {
        try {
            // 开始事务
            $db->beginTransaction();

            // 如果新的排序值已经存在，需要先将其他记录的排序值调整
            $stmt = $db->prepare("SELECT id, sort_order FROM banners WHERE sort_order = :sort AND id != :id");
            $stmt->bindValue(':sort', $sort);
            $stmt->bindValue(':id', $id);
            $stmt->execute();
            $existing = $stmt->fetch(PDO::FETCH_ASSOC);

            if ($existing) {
                // 获取当前记录的排序值
                $stmt = $db->prepare("SELECT sort_order FROM banners WHERE id = :id");
                $stmt->bindValue(':id', $id);
                $stmt->execute();
                $current_sort = $stmt->fetchColumn();

                // 更新已存在的记录的排序值
                $stmt = $db->prepare("UPDATE banners SET sort_order = :current_sort WHERE id = :existing_id");
                $stmt->bindValue(':current_sort', $current_sort);
                $stmt->bindValue(':existing_id', $existing['id']);
                $stmt->execute();
            }

            // 更新目标记录的排序值
            $stmt = $db->prepare("UPDATE banners SET sort_order = :sort WHERE id = :id");
            $stmt->bindValue(':sort', $sort);
            $stmt->bindValue(':id', $id);
            $stmt->execute();

            // 提交事务
            $db->commit();

            // 返回成功响应
            echo json_encode(['success' => true]);
            exit;
        } catch (Exception $e) {
            // 回滚事务
            $db->rollBack();
            echo json_encode(['success' => false, 'message' => $e->getMessage()]);
            exit;
        }
    }
}

// 如果到达这里，说明请求无效
echo json_encode(['success' => false, 'message' => '无效的请求']);
?> 